草庐IT

Java final 与 C++ const

全部标签

c++ - 将 QString 转换为 char * 的简洁方法(不是 const char* !!!!)

我有一个丑陋的代码来处理这些东西(创建一个c字符指针并在其中复制QString)但也许......以一种优雅的方式存在于QT中......实际代码:QStringmaquinaisamethodparameter.char*c_maquina=newchar[maquina.length()+1];strcpy(c_maquina,maquina.toStdString().c_str());仅供引用,我需要一个REALchar*而不是简单的constchar*所以这段代码不起作用:idMaquina.toLatin1().data();我不能使用http://developer.qt

C++ 和 QT4.5 - 传递一个 const int& 矫枉过正?通过引用传递对信号/插槽有帮助吗?

两个问题合而为一...对于实时视频处理应用程序,我有许多函数每帧调用多次。听取有关const和按引用传递的建议,这些函数的签名有点像这样voidprocessSomething(constint&value);当我不断输入几个额外的字符时,我想知道这是否有点矫枉过正。第二个问题,关于通过引用传递的主题,在QT的槽/信号机制中,通过引用传递是否有助于防止在正常函数调用中复制对象? 最佳答案 是的,这是矫枉过正,实际上会导致代码比按值传递int慢。一个int是四个字节;引用(本质上是一个内存地址)也是四个字节(在32位机器上)或八个字节

c++ - 如果成员函数影响逻辑状态而不是按位状态,它们应该是 "const"吗?

我正在编写一个类来包装控制硬件设备的遗留CAPI。在一个简化的例子中,我可能有这样的东西:classdevice{public:voidset_request(intdata){legacy_set_req(p_device,data);}intget_response()const{returnlegacy_get_rsp(p_device);}private:device_handle_t*constp_device;};类本身没有按位状态;因此,我可以选择将set_request()声明为const,编译器会对此感到满意。但是,从语义的角度来看,考虑到它会影响对象的可观察行为,这

c++ - 具有类型 'const CompareVPtrs' 的表达式将丢失一些 const-volatile 限定符以便调用

我正在用C++实现十五个益智控制台游戏,引发了以下错误Error4errorC3848:expressionhavingtype'constCompareVPtrs'wouldlosesomeconst-volatilequalifiersinordertocall'boolCompareVPtrs::operator()(Vertex*,Vertex*)'c:\programfiles\microsoftvisualstudio11.0\vc\include\xfunctional3241puzzle15这是我的结构structCompareVPtrs:publicbinary_fu

c++ - 我在滥用 `const` 吗?

最近几周,我发现自己到处都在使用大量的const。不仅在方法或参数声明中,甚至在临时变量中也是如此。让我用一个简单的函数来说明。我曾经写过://Adummyfunctionthatsumssomecomputationresultsunsignedintsum_results(constOperation&p1,constOperation&p2){unsignedintresult1=p1.computeResult();unsignedintresult2=p2.computeResult();//Wellthisfunctioncouldbeinonesinglelinebut/

c++ - 错误 : cannot convert 'const wchar_t [13]' to 'LPCSTR {aka const char*}' in assignment

//includethebasicwindowsheaderfile#include#include//theWindowProcfunctionprototypeLRESULTCALLBACKWindowProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);//theentrypointforanyWindowsprogramintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){//thehandleforthew

c++ - C++ 中的 static const 与 #define - 可执行文件大小的差异

我的基本情况:我有一个包含类似#definefoo(Flag1|Flags2|Flag3)的包含文件,因此它是位标志的预定义组合。为了类型安全,我想用静态常量替换这些#defines,即staticconstintfoo=(Flag1|Flag2|Flag3)(或类似的)。这个包含文件包含在程序的几十个地方。现在,当我在启用所有相关优化选项(使用VS2010的C++编译器)的情况下进行发布构建时,替换#defines似乎会使可执行文件增加几个KiB,具体取决于我替换了多少常量。为什么会这样?据我所知,如果可能的话,整数常量应该“内联”到生成的ASM代码中,我看不出如何使用staticc

c++ - x86/C++ - 指向指针 : Const being violated by compiler? 的指针

我正在为我的学生项目的游戏引擎开发一个共享指针(称为句柄)实现,我们遇到了一个我们无法解释的错误。出于某种原因,在我们工厂的某个时刻,有一个无效的内部指针通过句柄传递给工厂,这导致我们的原型(prototype)加载期间发生崩溃。我们调试了几个小时的过程,并将任何复杂的语句分解为最简单的版本,以便于调试。我最终将问题归结为Handle类的复制构造函数。但是,似乎仍然存在释放内部指针的中间步骤。我阅读了所有我能找到的关于可能导致此问题的文章,但没有找到任何内容。最后,我决定查看反汇编代码,看看我是否能弄清楚发生了什么。这是没有反汇编的复制构造函数。templateHandle::Hand

c++ - const 基类的作用

这个问题在这里已经有了答案:Isthereanydifferencebetween"T"and"constT"intemplateparameter?(3个答案)constintemplateargument[duplicate](2个答案)关闭9年前。以下构造的实际效果是什么:classBase{/*...*/};templateclassDerived:publicT{/*...*/};intmain(){Derivedd;//...}Derived类是否只能访问Base接口(interface)的const部分?我的第一个测试表明实际上根本没有效果。为什么?谢谢!

c++ - 临时 const 数组未绑定(bind)到右值引用

我有以下测试程序:#include#include#includetemplatevoidfoo(Ty(&&)[N]){std::cout::valuevoidfoo(Ty(&)[N]){std::cout::valueusingid=Ty;intmain(){std::cout.setf(std::cout.boolalpha);foo(id{1,2,3,4,5});foo(id{1,2,3,4,5});//我希望标有箭头的行会调用右值重载,就像它上面的非常量调用一样,但事实并非如此。这只是GCC中的一个错误,还是标准中有什么东西导致选择左值重载? 最佳答